KÜTÜPHANELER

library(pastecs)
require(graphics)
library(factoextra)
library(cluster)
library(fpc)
library(fossil)
library(NbClust)
library(clustertend)
library(corrplot)
library(stats) 
library(psych)

Veri setinin hazırlanması:

Veri setinde, meme kanseri tümörlerinin iyi veya kötü huylu olup olmadıklarına dair elde edilen gözlemler yer almaktadır.

Kümeleme analizi yapılırken, ID değerleri kullanılacaktır.

Veri setinin ikinci sütununda kanser teşhisi koyulan kişilerin tümörlerinin huyu belirtilmiştir.

Verinin analizinde kullanılacak 3.sütundan 12.sütuna kadar olan değerler ise (hücre çekirdeğine ait özelliklerin ortalamasıdır)aşağıda belirtilen değerlerin ortalamasıdır.

radius_mean: merkezden noktaya olan uzaklıkları

texture_mean: gri tonlamalı değerlerin standart sapmaları

perimeter_mean: hücre çekirdeğinin çevreleri

area_mean: hücre çekirdeğinin alanları

smoothness_mean: yarıçap uzunluklarındaki yerel değişim

compactness_mean: en küçük kanser hücreleri (perimeter^2 / area - 1.0)

concavity_mean: kontürün iç bükey kısımlarının şiddeti

concave.points_mean: kontürün iç bükey kısımlarının sayısı

symmetry_mean: simetri

fractal_dimension_mean: fraktal boyutu

data <- read.csv(file="wdbc.csv",sep=",",header = TRUE,row.names = 1)
data <- data[,1:11]
head(data,6)
##          diagnosis radius_mean texture_mean perimeter_mean area_mean
## 842302           M       17.99        10.38         122.80    1001.0
## 842517           M       20.57        17.77         132.90    1326.0
## 84300903         M       19.69        21.25         130.00    1203.0
## 84348301         M       11.42        20.38          77.58     386.1
## 84358402         M       20.29        14.34         135.10    1297.0
## 843786           M       12.45        15.70          82.57     477.1
##          smoothness_mean compactness_mean concavity_mean
## 842302           0.11840          0.27760         0.3001
## 842517           0.08474          0.07864         0.0869
## 84300903         0.10960          0.15990         0.1974
## 84348301         0.14250          0.28390         0.2414
## 84358402         0.10030          0.13280         0.1980
## 843786           0.12780          0.17000         0.1578
##          concave.points_mean symmetry_mean fractal_dimension_mean
## 842302               0.14710        0.2419                0.07871
## 842517               0.07017        0.1812                0.05667
## 84300903             0.12790        0.2069                0.05999
## 84348301             0.10520        0.2597                0.09744
## 84358402             0.10430        0.1809                0.05883
## 843786               0.08089        0.2087                0.07613

569 gözlem ve 11 değişken üzerinden verinin analizi yapılacaktır.

1. Hücre çekirdeğine ait özelliklerin tanımlayıcı istatistiklerini elde ederek, yorumlayınız

stat.desc(data[,-1])
##               radius_mean texture_mean perimeter_mean    area_mean
## nbr.val       569.0000000 5.690000e+02   5.690000e+02 5.690000e+02
## nbr.null        0.0000000 0.000000e+00   0.000000e+00 0.000000e+00
## nbr.na          0.0000000 0.000000e+00   0.000000e+00 0.000000e+00
## min             6.9810000 9.710000e+00   4.379000e+01 1.435000e+02
## max            28.1100000 3.928000e+01   1.885000e+02 2.501000e+03
## range          21.1290000 2.957000e+01   1.447100e+02 2.357500e+03
## sum          8038.4290000 1.097581e+04   5.233038e+04 3.726319e+05
## median         13.3700000 1.884000e+01   8.624000e+01 5.511000e+02
## mean           14.1272917 1.928965e+01   9.196903e+01 6.548891e+02
## SE.mean         0.1477358 1.803088e-01   1.018666e+00 1.475301e+01
## CI.mean.0.95    0.2901752 3.541534e-01   2.000813e+00 2.897711e+01
## var            12.4189201 1.849891e+01   5.904405e+02 1.238436e+05
## std.dev         3.5240488 4.301036e+00   2.429898e+01 3.519141e+02
## coef.var        0.2494497 2.229712e-01   2.642083e-01 5.373645e-01
##              smoothness_mean compactness_mean concavity_mean
## nbr.val         5.690000e+02     5.690000e+02   5.690000e+02
## nbr.null        0.000000e+00     0.000000e+00   1.300000e+01
## nbr.na          0.000000e+00     0.000000e+00   0.000000e+00
## min             5.263000e-02     1.938000e-02   0.000000e+00
## max             1.634000e-01     3.454000e-01   4.268000e-01
## range           1.107700e-01     3.260200e-01   4.268000e-01
## sum             5.482900e+01     5.937002e+01   5.052681e+01
## median          9.587000e-02     9.263000e-02   6.154000e-02
## mean            9.636028e-02     1.043410e-01   8.879932e-02
## SE.mean         5.895989e-04     2.214026e-03   3.342028e-03
## CI.mean.0.95    1.158060e-03     4.348678e-03   6.564242e-03
## var             1.977997e-04     2.789187e-03   6.355248e-03
## std.dev         1.406413e-02     5.281276e-02   7.971981e-02
## coef.var        1.459536e-01     5.061555e-01   8.977525e-01
##              concave.points_mean symmetry_mean fractal_dimension_mean
## nbr.val             5.690000e+02  5.690000e+02           5.690000e+02
## nbr.null            1.300000e+01  0.000000e+00           0.000000e+00
## nbr.na              0.000000e+00  0.000000e+00           0.000000e+00
## min                 0.000000e+00  1.060000e-01           4.996000e-02
## max                 2.012000e-01  3.040000e-01           9.744000e-02
## range               2.012000e-01  1.980000e-01           4.748000e-02
## sum                 2.783499e+01  1.030811e+02           3.573184e+01
## median              3.350000e-02  1.792000e-01           6.154000e-02
## mean                4.891915e-02  1.811619e-01           6.279761e-02
## SE.mean             1.626700e-03  1.149266e-03           2.959858e-04
## CI.mean.0.95        3.195081e-03  2.257331e-03           5.813603e-04
## var                 1.505661e-03  7.515428e-04           4.984872e-05
## std.dev             3.880284e-02  2.741428e-02           7.060363e-03
## coef.var            7.932036e-01  1.513248e-01           1.124304e-01
apply(data[,-1],2, var)
##            radius_mean           texture_mean         perimeter_mean 
##           1.241892e+01           1.849891e+01           5.904405e+02 
##              area_mean        smoothness_mean       compactness_mean 
##           1.238436e+05           1.977997e-04           2.789187e-03 
##         concavity_mean    concave.points_mean          symmetry_mean 
##           6.355248e-03           1.505661e-03           7.515428e-04 
## fractal_dimension_mean 
##           4.984872e-05
sum(is.na(data[,-1]))
## [1] 0

Değişkenlerin ortalamaları ve varyanslarına bakıldığında çok fazla değişkenlik gösterdiğini görüyoruz. Aynı zamanda verimizde eksik gözlem de bulunmamaktadır.

2. Korelasyon matrisi elde ederek, yorumlayınız.

corr=cor(data[,-1])
corrplot.mixed(corr,lower.col = "black",tl.cex=0.6,tl.pos = "lt")

Korelasyon matrisine bakıldığında;

3. Değişkenler için kutu grafiği (box-plot) çizdirerek, yorumlayınız.

par(mar=c(10,4,1,1))
boxplot(data[,-1],las=2)

Boxplot’a bakıldığında;

4. Temel bileşenler analizi uygulayınız.

Verideki değişkenlerin değişkenlikleri ve ölçüm birimleri birbirinden farklı olduğu için temel bileşenler analizinin standartlaştırılmış veri üzerinden yapılması gerekiyor.Bu durumda öncelikle verimizi scale ediyoruz.

data_new <- scale(data[,-1])
data.cor=cor(data_new)
data.eigen=eigen(data.cor)
data.eigen
## eigen() decomposition
## $values
##  [1] 5.4785879917 2.5187135854 0.8806151792 0.4990094357 0.3725391897
##  [6] 0.1241417485 0.0800853104 0.0348897928 0.0111354606 0.0002823059
## 
## $vectors
##              [,1]         [,2]        [,3]         [,4]         [,5]
##  [1,] -0.36393793 -0.313929073 -0.12442759  0.029558858  0.031067022
##  [2,] -0.15445113 -0.147180909  0.95105659  0.008916084  0.219922761
##  [3,] -0.37604434 -0.284657885 -0.11408360  0.013458069  0.005945081
##  [4,] -0.36408585 -0.304841714 -0.12337786  0.013442682  0.019341222
##  [5,] -0.23248053  0.401962324 -0.16653247 -0.107802033  0.843745292
##  [6,] -0.36444206  0.266013147  0.05827786 -0.185700413 -0.240182967
##  [7,] -0.39574849  0.104285968  0.04114649 -0.166653523 -0.312533244
##  [8,] -0.41803840  0.007183605 -0.06855383 -0.072983951  0.009180198
##  [9,] -0.21523797  0.368300910  0.03672364  0.892998475 -0.112888068
## [10,] -0.07183744  0.571767700  0.11358395 -0.349331790 -0.264878077
##               [,6]        [,7]         [,8]         [,9]         [,10]
##  [1,] -0.264180150  0.04418839  0.084834062 -0.474425305  0.6690714888
##  [2,] -0.032206572 -0.02055748 -0.007126797 -0.004212629 -0.0002497826
##  [3,] -0.237819464  0.08336923  0.089258879 -0.380167210 -0.7404905337
##  [4,] -0.331707454 -0.26118796  0.144609749  0.747347357  0.0323589585
##  [5,]  0.062225368 -0.01129197  0.170503128 -0.005847386 -0.0036904058
##  [6,]  0.005271104  0.80380484  0.063980134  0.218732407  0.0527527802
##  [7,]  0.601467155 -0.36713629  0.449573315 -0.081170670  0.0103668020
##  [8,]  0.265613395 -0.14131308 -0.850918762  0.022024652  0.0037475480
##  [9,] -0.061957003 -0.04790201  0.016455606 -0.009067850 -0.0014669472
## [10,] -0.567918997 -0.34521359 -0.065259461 -0.129667491 -0.0070573477
data.pca <- prcomp(data_new, center = TRUE, scale. = FALSE)
data.pca 
## Standard deviations (1, .., p=10):
##  [1] 2.34063837 1.58704555 0.93841099 0.70640600 0.61035989 0.35233755
##  [7] 0.28299348 0.18678810 0.10552469 0.01680196
## 
## Rotation (n x k) = (10 x 10):
##                                PC1          PC2         PC3          PC4
## radius_mean            -0.36393793  0.313929073 -0.12442759  0.029558858
## texture_mean           -0.15445113  0.147180909  0.95105659  0.008916084
## perimeter_mean         -0.37604434  0.284657885 -0.11408360  0.013458069
## area_mean              -0.36408585  0.304841714 -0.12337786  0.013442682
## smoothness_mean        -0.23248053 -0.401962324 -0.16653247 -0.107802033
## compactness_mean       -0.36444206 -0.266013147  0.05827786 -0.185700413
## concavity_mean         -0.39574849 -0.104285968  0.04114649 -0.166653523
## concave.points_mean    -0.41803840 -0.007183605 -0.06855383 -0.072983951
## symmetry_mean          -0.21523797 -0.368300910  0.03672364  0.892998475
## fractal_dimension_mean -0.07183744 -0.571767700  0.11358395 -0.349331790
##                                 PC5          PC6         PC7          PC8
## radius_mean            -0.031067022  0.264180150 -0.04418839  0.084834062
## texture_mean           -0.219922761  0.032206572  0.02055748 -0.007126797
## perimeter_mean         -0.005945081  0.237819464 -0.08336923  0.089258879
## area_mean              -0.019341222  0.331707454  0.26118796  0.144609749
## smoothness_mean        -0.843745292 -0.062225368  0.01129197  0.170503128
## compactness_mean        0.240182967 -0.005271104 -0.80380484  0.063980134
## concavity_mean          0.312533244 -0.601467155  0.36713629  0.449573315
## concave.points_mean    -0.009180198 -0.265613395  0.14131308 -0.850918762
## symmetry_mean           0.112888068  0.061957003  0.04790201  0.016455606
## fractal_dimension_mean  0.264878077  0.567918997  0.34521359 -0.065259461
##                                 PC9          PC10
## radius_mean             0.474425305 -0.6690714888
## texture_mean            0.004212629  0.0002497826
## perimeter_mean          0.380167210  0.7404905337
## area_mean              -0.747347357 -0.0323589585
## smoothness_mean         0.005847386  0.0036904058
## compactness_mean       -0.218732407 -0.0527527802
## concavity_mean          0.081170670 -0.0103668020
## concave.points_mean    -0.022024652 -0.0037475480
## symmetry_mean           0.009067850  0.0014669472
## fractal_dimension_mean  0.129667491  0.0070573477
(data.pca$sdev)^2
##  [1] 5.4785879917 2.5187135854 0.8806151792 0.4990094357 0.3725391897
##  [6] 0.1241417485 0.0800853104 0.0348897928 0.0111354606 0.0002823059

a. Bileşen sayısına gerekçelerinizi belirterek karar veriniz.

Scree Plot

screeplot(data.pca, type='lines')

  • Screeplotta açıklanan varyans oranlarına bakıldığında bileşen sayısının 3 ya da 4 olarak belirlenmesi uygundur. Diğer yöntemler dikkate alınarak bileşen sayısına kara verilecektir.

Açıklama Yüzdesi

summary(data.pca)
## Importance of components:
##                           PC1    PC2     PC3    PC4     PC5     PC6
## Standard deviation     2.3406 1.5870 0.93841 0.7064 0.61036 0.35234
## Proportion of Variance 0.5479 0.2519 0.08806 0.0499 0.03725 0.01241
## Cumulative Proportion  0.5479 0.7997 0.88779 0.9377 0.97495 0.98736
##                            PC7     PC8     PC9    PC10
## Standard deviation     0.28299 0.18679 0.10552 0.01680
## Proportion of Variance 0.00801 0.00349 0.00111 0.00003
## Cumulative Proportion  0.99537 0.99886 0.99997 1.00000
  • Bu sonuçlara bakıldığında açıklanan varyans oranı,ilk özdeğere karşılık gelen bileşenle 0.54 ikinci özdeğere karşılık gelen bileşenle 0.25 üçüncü özdeğere karşılık gelen bileşenle 0.08’dir.Burada toplam değişime bakıldığında ilk üç bileşen %88 ile bu değişimi açıklamamıza yeterli olacaktır.Bu durumda %80 olarak sınırı belirlersek, temel bileşen sayısı olarak 3 bu veri için uygun olacaktır.

Özdeğerlerin 1’den büyük olması

(data.pca$sdev)^2
##  [1] 5.4785879917 2.5187135854 0.8806151792 0.4990094357 0.3725391897
##  [6] 0.1241417485 0.0800853104 0.0348897928 0.0111354606 0.0002823059
  • Bu durum için ilk 2 özdeğer 1’den büyük olduğundan temel bileşen sayısının 2 olarak belirlenmesi uygundur.

\(\bullet\) \(\bullet\) Sonuç olarak 3 yöntemde ele alındığında bileşen sayısının 3 olarak belirlenmesine karar verilmiştir.

data.pca$rotation[,c(1,2,3)]
##                                PC1          PC2         PC3
## radius_mean            -0.36393793  0.313929073 -0.12442759
## texture_mean           -0.15445113  0.147180909  0.95105659
## perimeter_mean         -0.37604434  0.284657885 -0.11408360
## area_mean              -0.36408585  0.304841714 -0.12337786
## smoothness_mean        -0.23248053 -0.401962324 -0.16653247
## compactness_mean       -0.36444206 -0.266013147  0.05827786
## concavity_mean         -0.39574849 -0.104285968  0.04114649
## concave.points_mean    -0.41803840 -0.007183605 -0.06855383
## symmetry_mean          -0.21523797 -0.368300910  0.03672364
## fractal_dimension_mean -0.07183744 -0.571767700  0.11358395

Yapılan temel bileşenler analizinden sonra burada bileşenlerin değişkenlerden etkilenme durumları gözükmektedir.Bu sonuçlara göre;

  • PC1 yani birinci bileşene en çok etki eden değişkenler: radius_mean(-0.36), perimeter_mean(-0.37), area_mean(-0.36), compactness_mean(-0.36), concavity_mean(-0.39), concave.points_mean(-0.41).

  • PC2 yani ikinci bileşene en çok etki eden değişkenler: smoothness_mean(-0.40), symmetry_mean(-0.368), fractal_dimension_mean(-0.51).

  • PC3 yani üçüncü bileşene en çok etki eden değişken ise texture_mean(0.95) değişkenidir.

head(data.pca$x[,c(1,2,3)])
##                PC1        PC2        PC3
## 842302   -5.219562 -3.2016111 -2.1694307
## 842517   -1.726575  2.5386054 -1.0187821
## 84300903 -3.966267  0.5495913 -0.3232843
## 84348301 -3.593551 -6.8989994  0.7921346
## 84358402 -3.148321  1.3568784 -1.8605969
## 843786   -1.380105 -3.3114977 -0.6973879

3 yeni bileşen için yeni gözlem değerleri de bu şekildedir.

b. Görseller üzerinden, değişkenler ve gözlemler için yorumlama yapınız.

fviz_pca_biplot(data.pca, repel = FALSE,
                col.var = "contrib",
                col.ind = "cos2"  
                ,labelsize=3
)

Görsele bakıldığında;

  • Verilerin çoğunun aynı özelliklere sahip olduğunu ve aynı noktada toplandığını görebiliriz.

  • 1.bileşendeki değeri en yüksek olan gözlemlerin ID’leri; 911296202, 865423, 86355, 8610862, 8611555, 899987, 873592, 8810703.En düşük değere sahip olan gözlemin ID’si 92751 dir.

  • 2.bileşendeki değeri en yüksek olan gözlemlerin ID’leri; 915186 ve 84348301. En düşük değere sahip olan gözlemin ID’si 8810703’dir.

  • 1.bileşendeki değeri en yüksek olan 8 gözlem ve 2.bileşendeki değeri en yüksek olan 2 gözlem haricinde gözlemlerin çoğunun değişkenler tarafından benzer değerler aldığı görülmektedir.

  • Bütün bunlar doğrultusunda diyebiliriz ki verinin analizi için açıklanmak isteneni açıklamada yeterli olmayan değişkenler seçilmiş ya da gözlem sayısı yetersiz gelmiş olabilir.

Kümeleme Analizi

Kümeleme analizi yapılırken pca analizi sonucunda 3 yeni bileşen için elde edilen yeni gözlem değerleri kullanılacaktır.

data_p <- data.pca$x[,c(1,2,3)]

Kümeleme Yöntemi Seçimi:

  1. Kümeleme Eğiliminin Değerlendirilmesi:

-Kümeleme eğiliminin değerlendirilmesinde öncelikle hopkins istatistiğine sonrasında VAT algoritmasına bakılacaktır.

-HOPKINS İSTATİSTİĞİ:

Verinin uniform dağılımdan üretilme olasılığını ölçerek veri kümesinin kümelenme eğilimini değerlendirir.

\({H_0}\) = data uniform dağılıma uyar.

\({H_1}\) = data uniform dağılıma uymaz.

set.seed(123)
h_data=hopkins(data_p, nrow(data_p)-1)
h_data
## $H
## [1] 0.246597

Hopkins istatistiğinin 0’a yakın çıkması durumunda \({H_0}\) reddedilir.Bu da verinin önemli ölçüde kümelenebilir olduğunu gösterir.Yani bu veri seti için de hopkins istatistiği(0.24) 0’a yakın bir sonuç verdiğinden verimizin kümelenebilir bir veri olduğunu anlıyoruz.

-VAT ALGORİTMASI:

Kümeleme eğilimine görsel bir değerlendirme sağlar.

Kümeler içinde benzer nesneler olacak şekilde sıralanır. Sıralı bir farklılık matrisi oluşturulur. Oluşturulan bu matris VAT Algoritmasının görsel bir çıktısı olan sıralı bir farklılık/benzemezlik görüntüsü olarak görüntülenir.

fviz_dist(dist(data_p), show_labels = FALSE )+
  labs(title = "FPL data")

Elde edilen görsel sonucunda veri setimizin bir küme yapısının olduğunu çıkarabiliriz.

  1. En iyi kümeleme algoritmasının seçilmesi:

En iyi kümeleme algoritmasını ve en uygun küme sayısının seçilmesi için birden çok kümeleme algortimasını karşılaştırabilmesini sağlayan clValid komutu kullanılacaktır.

İki küme geçerliliği ölçümlerini kullanarak kümeleme algoritmalarını karışılaştırır:

a)Dahili Ölçümler: Bağlantı,Dunn İndeksi, Silhoutte Katsayısı

b)Durağanlık Ölçümleri:Kümelenme sonucunun tutarlılığını, her bir sütun kaldırıldıktan sonra elde edilen kümeler ile teker teker karşılaştırarak değerlendirir.

library(clValid)
clmethods <- c("kmeans","pam","hierarchical","clara")
intern <- clValid(data_p,nClust = 2:6,clMethods = clmethods,validation = "internal")
summary(intern)
## 
## Clustering Methods:
##  kmeans pam hierarchical clara 
## 
## Cluster sizes:
##  2 3 4 5 6 
## 
## Validation Measures:
##                                   2        3        4        5        6
##                                                                        
## kmeans       Connectivity   57.2246  89.5548 142.1639 154.9512 175.7968
##              Dunn            0.0267   0.0172   0.0164   0.0235   0.0204
##              Silhouette      0.4429   0.3789   0.2776   0.2822   0.2669
## pam          Connectivity   50.4206 105.7948 160.9770 201.6274 200.4496
##              Dunn            0.0296   0.0182   0.0166   0.0193   0.0255
##              Silhouette      0.4328   0.3093   0.2575   0.2462   0.2662
## hierarchical Connectivity   14.9956  19.8421  23.6889  61.6302  65.3310
##              Dunn            0.0689   0.0781   0.0781   0.0551   0.0551
##              Silhouette      0.5068   0.4550   0.4361   0.3903   0.3819
## clara        Connectivity   49.2365 112.8325 139.2298 205.0766 215.0655
##              Dunn            0.0332   0.0182   0.0210   0.0209   0.0231
##              Silhouette      0.4471   0.3082   0.2426   0.2283   0.2490
## 
## Optimal Scores:
## 
##              Score   Method       Clusters
## Connectivity 14.9956 hierarchical 2       
## Dunn          0.0781 hierarchical 3       
## Silhouette    0.5068 hierarchical 2

Silhoutte katsayısının 1’e yakın olması,Dunn indeksinin değerinin büyük olması,bağlantı değerinin de en küçük olması optimum durumdur.

Bu durumda elde edilen çıktıya bakıldığında:

-silhoutte katsayısına,dunn indeksine ve bağlantıya(connectivity) göre hierarchical yöntemi ve silhoutte katsayısı ile bağlantıya göre 2 küme sayısının dunn indeksine göre ise 3 küme sayısının kümeleme için optimum durum olduğunu görüyoruz.(sırasıyla değerler 0.5068,0.0781,14.9956)

stab <- clValid(data_p,nClust = 2:6,clMethods = clmethods,validation = "stability")
summary(stab)
## 
## Clustering Methods:
##  kmeans pam hierarchical clara 
## 
## Cluster sizes:
##  2 3 4 5 6 
## 
## Validation Measures:
##                        2      3      4      5      6
##                                                     
## kmeans       APN  0.1640 0.2583 0.4044 0.3659 0.4538
##              AD   3.0868 2.9191 2.9254 2.6818 2.6641
##              ADM  0.7629 1.0475 1.6675 1.2214 1.3526
##              FOM  1.6230 1.6091 1.6133 1.6080 1.6058
## pam          APN  0.2054 0.3343 0.3905 0.4088 0.5403
##              AD   3.1211 2.9302 2.8146 2.7065 2.7011
##              ADM  0.9576 1.1910 1.3581 1.3388 1.5628
##              FOM  1.6234 1.6115 1.6111 1.6100 1.6054
## hierarchical APN  0.0101 0.2042 0.2028 0.1540 0.1809
##              AD   3.5163 3.4631 3.4319 3.0561 3.0456
##              ADM  0.2614 0.8474 0.8437 1.1407 1.1810
##              FOM  1.6229 1.6153 1.6134 1.6016 1.5998
## clara        APN  0.2210 0.3242 0.4248 0.4187 0.5222
##              AD   3.1479 2.9295 2.9089 2.7580 2.7465
##              ADM  0.9840 1.1585 1.5012 1.3753 1.6800
##              FOM  1.6227 1.6080 1.6089 1.6131 1.6049
## 
## Optimal Scores:
## 
##     Score  Method       Clusters
## APN 0.0101 hierarchical 2       
## AD  2.6641 kmeans       6       
## ADM 0.2614 hierarchical 2       
## FOM 1.5998 hierarchical 6

Durağanlık ölçümlerinde elde edilen APN,ADM ve FOM değerleri 0 ile 1 arasında değişir.Küçük değerlerde çıkması yüksek tutarlılıkta kümelenme olduğunun göstergesidir.AD değeri ise 0 ile sonsuz arasında değer alır ve yine küçük değere aship olması tercih edilir.

Bu durumda elde edilen çıktıya bakıldığında;

-APN(0.0101) değeri için hierarchical yöntemi ve 2 küme, -AD(2.6641) değeri için kmeans yöntemi ve 6 küme, -ADM(0.2614) değeri için hierarchical yöntemi ve 2 küme, -FOM(1.5998) değeri için hierarchical yöntemi ve 6 küme optimum durumdur.

**2 yönteme bakıldığında hierarchical kümeleme ve kmeans yöntemi önerilmiştir.Sonuç olarak hangi yöntemin kullanılacağına net olarak karar verilememiştir.İki yöntem için de optimum küme sayıları belirlenerek değerlendirme yapılacaktır.

  1. Optimum küme sayısının belirlenmesi:

Bölümlemeye dayalı yöntemlerde küme sayısının belirlenmesi temel bir sorundaur ve bu sorunun kesin bir cevabı yoktur.Bir şekilde özneldir.Benzerlikleri ölçmek için kullanılan yönteme ve bölümleme için kullanılan parametreler bağlıdır.

Basit ve popüler olan hiyerarşik kümeleme kullanılarak üretilen dendogram incelenerek de küme sayısı belirlenebilir ancak bu da özneldir.

Küme sayısının belirlenmesinde kullanılan bazı yöntemler;

a)Doğrudan Yöntemler: küme içerisindeki kareler toplamı veya ortalama silhoutte gibi bir ölçütün optimize edilmesinden oluşur.

b)İstatiksel test yöntemleri: \({H_0}\) hipotezine karşı kanıtların karşılaştırılmasından oluşur.Buna bir örnek gap istatistiğidir.

Bu yöntemlere ek olarak, en uygun sayıda kümeyi tanımlamak için yayınlanmış otuzdan fazla indeks ve yöntem vardır.Çoğunluk kuralını kullanarak küme sayısına karar vermek için bu 30 endeksin tümünü hesaplamada kullanılan R kodları bulunmaktadır.

-Elbow Yöntemi: Toplam küme içi değişimin(wss) en aza indirgenmesi temel düşüncedir.Wss’nin en küçük olduğu konumdaki değer küme sayısı olarak seçilmelidir.Ancak bu yöntemde kesin sonuçlar vermez.

-Silhoutte Yöntemi: Kümelemenin kalitesini ölçer.Yani, her nesnenin kendi kümesinde ne kadar iyi olduğunu belirler.Yüksek ortalama silhoutte genişliği iyi bir kümelenmeyi gösterir.

-Gap İstatistiği Yöntemi: Bu yaklaşım herhangi bir kümeleme yöntemine uygulanabilir.Farklı k değerleri için küme içi varyasyon içindeki toplamı,verilerin sıfır referans dağılımı altında beklenen değerleriyle karşılaştırır.Optimal kümelerin tahmini,gap istatistiğini maksimize eden değer olacaktır.

a)Hierarchical kümeleme için optimal küme sayısının belirlenmesi:

set.seed(123)
p1=fviz_nbclust(data_p, hcut, method = "wss") +
  labs(subtitle = "Elbow method")
p2=fviz_nbclust(data_p, hcut, method = "silhouette")+
  labs(subtitle = "Silhouette method")
p3=fviz_nbclust(data_p, hcut, nstart = 25, method = "gap_stat", nboot = 50)+
    labs(subtitle = "Gap statistic method")
par(mfrow=c(1,3))
p1

p2

p3

Bu sonuçlara bakıldığında elbow yöntemiyle 6 küme, silhoutte ve gap yöntemlerine göre de 2 küme optimum küme sayısı olarak gözükmektedir.

Hierarchical kümeleme yönteminde kullanılan 5 tane bağlantı fonksiyonu vardır.Bunlar Single linkage, complete linkage, Average linkage, Centroid linkage ve Ward minimum varyansdır.Bu fonksiyonlardan average linkage ve Ward minimum varyans kullanılarak optimum küme sayısını belirlemede Çoğunluk kuralına bakılacaktır.

Uzaklık ölçüsü olarak da veride uç değerler olduğundan uçdeğerlerden daha az etkilenmesi nedeniyle manhattan uzaklık ölçüsü kullanılacaktır.

nbclust_data_ward <- NbClust(data_p, distance = "manhattan", min.nc = 2,
              max.nc = 9, method = "ward.D2")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 6 proposed 2 as the best number of clusters 
## * 10 proposed 3 as the best number of clusters 
## * 3 proposed 4 as the best number of clusters 
## * 1 proposed 6 as the best number of clusters 
## * 2 proposed 8 as the best number of clusters 
## * 1 proposed 9 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  3 
##  
##  
## *******************************************************************
fviz_nbclust(nbclust_data_ward)
## Among all indices: 
## ===================
## * 2 proposed  0 as the best number of clusters
## * 1 proposed  1 as the best number of clusters
## * 6 proposed  2 as the best number of clusters
## * 10 proposed  3 as the best number of clusters
## * 3 proposed  4 as the best number of clusters
## * 1 proposed  6 as the best number of clusters
## * 2 proposed  8 as the best number of clusters
## * 1 proposed  9 as the best number of clusters
## 
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  3 .

Ward.D2 bağlantı fonksiyonu kullanıldığında 3 kümenin optimal küme sayısı olduğu gözükmektedir.

nbclust_data_av <- NbClust(data_p, distance = "manhattan", min.nc = 2,
              max.nc = 9, method = "average")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 7 proposed 2 as the best number of clusters 
## * 2 proposed 3 as the best number of clusters 
## * 2 proposed 4 as the best number of clusters 
## * 5 proposed 5 as the best number of clusters 
## * 2 proposed 6 as the best number of clusters 
## * 5 proposed 8 as the best number of clusters 
## * 1 proposed 9 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  2 
##  
##  
## *******************************************************************
fviz_nbclust(nbclust_data_av)
## Among all indices: 
## ===================
## * 2 proposed  0 as the best number of clusters
## * 7 proposed  2 as the best number of clusters
## * 2 proposed  3 as the best number of clusters
## * 2 proposed  4 as the best number of clusters
## * 5 proposed  5 as the best number of clusters
## * 2 proposed  6 as the best number of clusters
## * 5 proposed  8 as the best number of clusters
## * 1 proposed  9 as the best number of clusters
## 
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  2 .

Average linkage bağlantı fonksiyonu kullanılarak 2 küme optimal küme sayısı olarak gözükmektedir.

Bu durumda hierarchical kümeleme analizi yapılırken optimum küme sayısı olarak 2 küme belirlenmiştir.

  1. Kmeans yöntemi için optimum küme sayısının belirlenmesi:
d1=fviz_nbclust(data_p, kmeans, method = "wss") +
    labs(subtitle = "Elbow method")
d2=fviz_nbclust(data_p, kmeans, method = "silhouette")+
  labs(subtitle = "Silhouette method")
d3=fviz_nbclust(data_p, kmeans, nstart = 25, method = "gap_stat", nboot = 50)+
    labs(subtitle = "Gap statistic method")
d1

d2

d3

Bu sonuçlara bakıldığında elbow yöntemiyle 6 küme, silhoutte ve gap yöntemlerine göre de 2 küme optimum küme sayısı olarak gözükmektedir.

nb <- NbClust(data_p, distance = "euclidean", min.nc = 2,
              max.nc = 10, method = "kmeans")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 9 proposed 2 as the best number of clusters 
## * 7 proposed 3 as the best number of clusters 
## * 1 proposed 4 as the best number of clusters 
## * 3 proposed 5 as the best number of clusters 
## * 3 proposed 7 as the best number of clusters 
## * 1 proposed 10 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  2 
##  
##  
## *******************************************************************
fviz_nbclust(nb)
## Among all indices: 
## ===================
## * 2 proposed  0 as the best number of clusters
## * 9 proposed  2 as the best number of clusters
## * 7 proposed  3 as the best number of clusters
## * 1 proposed  4 as the best number of clusters
## * 3 proposed  5 as the best number of clusters
## * 3 proposed  7 as the best number of clusters
## * 1 proposed  10 as the best number of clusters
## 
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  2 .

Çoğunluk kuralına göre kmeans yöntemi için 9 indeks optimum küme sayısını 2 olarak belirlemiştir.

Bu durumda kmeans yöntemi uygulanırken 2 küme optimum küme sayısı olarak belirlenmiştir.

5. K-ortalamalar ile kümeleme analizi uygulayarak, yorumlayınız.

Daha önceden de belirtildiği gibi kmeans ile analiz yapılırken küme sayısı olarak 2 kullanılacaktır.

set.seed(123)
km_p=kmeans(data_p, 2, nstart=25) 
head(km_p$cluster,40)
##   842302   842517 84300903 84348301 84358402   843786   844359 84458202 
##        1        1        1        1        1        1        1        1 
##   844981 84501001   845636 84610002   846226   846381 84667401 84799002 
##        1        1        2        2        1        2        1        1 
##   848406 84862001   849014  8510426  8510653  8510824  8511133   851509 
##        2        1        1        2        2        2        1        1 
##   852552   852631   852763   852781   852973   853201   853401   853612 
##        1        1        1        1        1        1        1        2 
## 85382601   854002   854039   854253   854268   854941   855133   855138 
##        1        1        1        1        2        2        2        2
table(km_p$cluster)
## 
##   1   2 
## 169 400
fviz_cluster(km_p, data = data_p,
             ellipse.type = "convex", # Concentration ellipse
             star.plot = TRUE, # Add segments from centroids to items
             repel = FALSE, # Avoid label overplotting (slow)
             ggtheme = theme_minimal()
)

6. K-medoids ile kümeleme analizi uygulayarak, yorumlayınız.

Öncelikle kmedoids yöntemi için optimal küme sayısı belirlenecektir.

fviz_nbclust(data_p, pam, method="silhouette") 

-Silhoutte yöntemine bakıldığında küme sayısı olarak 2 belirlenmiştir.

set.seed(123)
pam_data=pam(data_p,2)
pam_data$medoids
##               PC1         PC2        PC3
## 908445  -2.724787  0.78983892 0.05439776
## 9010598  1.335769 -0.04320513 0.02002320
table(pam_data$clustering)
## 
##   1   2 
## 177 392
fviz_cluster(pam_data, ellipse.type = "t", repel = FALSE, 
             ggtheme = theme_classic()
)

7. Aşamalı kümeleme analizi uygulayarak, yorumlayınız.

Aşamalı kümeleme(hierarchical) analizi uygulanırken veride uç değerler olmasından dolayı uzaklık ölçüsü olarak manhattan kullanılacaktır. Aynı zamanda daha önce yapılan analizler değerlendirildiğinde hierarchical kümeleme analizi yapılırken optimum küme sayısı olarak 2 küme ve bağlantı fonksiyonu olarak da average linkage kullanılacaktır.

dist_m_data=get_dist(data_p, stand = TRUE, method="manhattan")
hc_m_data=hclust(d=dist_m_data, method="average")
plot(hc_m_data,cex=0.3)

coph_m_data=cophenetic(hc_m_data)
cor(dist_m_data,coph_m_data)
## [1] 0.6798455

Küme ağacının ne kadar iyi oluşturulduğunu anlamanın yollarından biri kojenektif uzaklık ile orjinal uzaklık arasındaki korelasyonu hesaplamaktır.Bu değerin yüksek çıkması kümelemenin geçerli olduğunu gösterir.1’ e ne kadar yakın olursa kümeleme analizi veriyi o kadar iyi tanıtır. Burada elde edilen değer 0.69 ile ortalama bir değerdir.Bu da demek oluyor ki uygulanan kümeleme analizi veriyi çok da iyi olmasa da iyi bir şekilde yansıtmaktadır.

grup_data=cutree(hc_m_data, k=2)
table(grup_data)
## grup_data
##   1   2 
## 559  10
which(grup_data==2)
##   8611555     86355    865423    873592    878796   8810703  88299702 
##        83       109       123       181       203       213       237 
##     89812    899987 911296202 
##       340       353       462
fviz_dend(hc_m_data, k = 2, # Cut in four groups
          cex = 0.5, # label size
          k_colors = c("#2E9FDF", "#FC4E07"),
          color_labels_by_k = TRUE, # color labels by groups
          rect = TRUE # Add rectangle around groups
)